package com.east.spark.parttern.bridge;

/**
 * 桥接模式(Bridge)： 把事物和其具体实现分开(抽象化与实现化解耦)，使他们可以各自独立的变化。
 * 
 * 假设你的电脑是双系统(WinXP、Win7)，而且都安装了mysql、oracle、sqlserver、DB2这4种数据库
 * 
 * 那么你有2*4种选择去连接数据库。按平常的写法，咱要写2*4个类，但是使用了桥接模式，你只需写2+4个类
 * 
 * 可以看出桥接模式其实就是一种将N*M转化成N+M组合的思想。
 */
public class Client {

	public static void main(String[] args) {
		/**
		 * 第一种组合：winXP使用mysql驱动连接数据库
		 */
		Computer winxp = new WinXP();
		winxp.connection(new MysqlDriver());
		/**
		 * 第二种组合：win7使用mysql驱动连接数据库
		 */
		Computer win7 = new Win7();
		win7.connection(new MysqlDriver());
		/**
		 * 第三种组合：winXP使用oracle驱动连接数据库
		 */
		Computer cwinxp = new WinXP();
		cwinxp.connection(new OracleDriver());
		/**
		 * 第四种组合：winXP使用oracle驱动连接数据库
		 */
		Computer cwin7 = new Win7();
		cwin7.connection(new OracleDriver());

	}
}
